﻿/************************************************************************
** 文  件：
**	DeviceInfo.h
** 功  能：
**	分析设备信息实体类
** 作  者：
**	email:lixx2048@163.com
**  wechat:lixiang6153
**  QQ:941415509
** 日  期：
**	2024/03/15	14:00:00
** 说  明：
**	无
** 版  本：
**	2024/03/15	14:00:00		1.0		lixx2048@163.com
/************************************************************************/
#pragma once
#include <string>
#include <memory>
#include <boost/typeof/typeof.hpp>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/json_parser.hpp>
#include <boost/foreach.hpp>
#include <opencv2/opencv.hpp>
#include "../util/DateTime.h"

class DeviceInfo
{
public:
	DeviceInfo();
	virtual ~DeviceInfo();

public:
	std::string GetId();
	void SetId(std::string);

	std::string GetName();
	void SetName(std::string);

	std::string GetRtspUrl();
	void SetRtspUrl(std::string);

	std::string GetUsername();
	void SetUsername(std::string);

	std::string GetPassword();
	void SetPassword(std::string);

	std::string GetManufacture();
	void SetManufacture(std::string);

	int GetEnabled();
	void SetEnabled(int);

	int GetFrameGap();
	void SetFrameGap(int);

	std::string GetStartTime();
	void SetStartTime(std::string);

	std::string GetEndTime();
	void SetEndTime(std::string);

	std::string GetParams();
	void SetParams(std::string);

	std::string GetPolygon(int width, int height, std::vector<cv::Point2f>&);
	bool PointIn(int width, int height, cv::Point2f);

	int GetSilence();
	void SetSilence(int);

	DateTime GetCreateTime();
	void SetCreateTime(DateTime&);

	DateTime GetUpdateTime();
	void SetUpdateTime(DateTime&);

	DateTime GetDetectTime();
	void SetDetectTime(DateTime);

	std::string GetLastImage();
	void SetLastImage(std::string);

	std::string GetImageUrl();
	void SetImageUrl(std::string);

protected:
	// 设备编码
	std::string m_id = "";
	// 设备名称
	std::string m_name = "";
	// 视频地址
	std::string m_rtspUrl = "";
	// 登录账户
	std::string m_username = "";
	// 登录密码
	std::string m_password = "";
	// 所属厂家
	std::string m_manufacture = "";
	// 启用状态
	int m_enabled = 1;
	// 分析帧间隔
	int m_frameGap = 25;
	// 开始时间
	std::string m_startTime = "";
	// 结束时间
	std::string m_endTime = "";
	// 区域参数
	std::string m_params = "";
	// 静默周期
	int m_silence = 5;
	// 更新时间
	DateTime m_updateTime = DateTime::Now();
	// 创建时间
	DateTime m_createTime = DateTime::Now();
	// 检测时间
	DateTime m_detectTime = DateTime::Now();
	// 最新图片
	std::string m_lastImage = "";
	// 图片地址
	std::string m_imageUrl = "";
};

typedef std::shared_ptr<DeviceInfo> DeviceInfoPtr;